<?php
namespace app\common\model;

use think\facade\Request;

/**
 * 管理员日志模型
 * @package app\common\model
 * @author jwj<jwjbjg@gmail.com>
 * @copyright jwj
 */
class AdministratorLog extends Model
{
    // 自动写入时间
    protected $autoWriteTimestamp = 'timestamp';

    // 关闭更新时间
    protected $updateTime = false;

    protected $searchOptions = [
        'administrator_id' => ['='],// 管理员ID
        'info'             => ['like', '%%%s%%'],// 信息
        'ua'               => ['like', '%%%s%%'],// User-Agent
        'ip'               => ['like', '%%%s%%'],// ip
        'extra'            => ['like', '%%%s%%'],// 额外信息
    ];

    /**
     * 信息字段修改器
     * @param string $value
     * @return string
     */
    public function setInfoAttr($value)
    {
        return mb_strimwidth($value, 0, 1000, '...');
    }

    /**
     * 用户关联
     * @return \think\model\relation\BelongsTo
     */
    public function administrator()
    {
        return $this->belongsTo(Administrator::class,'administrator_id')->withField(['id', 'name']);
    }

    /**
     * 新增前事件
     * @param Model $res
     * @return mixed|void
     */
    public static function onBeforeInsert($res)
    {
        null === $res->ip && $res->ip = Request::ip();
        null === $res->ua && $res->ua = mb_strimwidth(Request::server('HTTP_USER_AGENT', 'Unknown'), 0, 500, '...') ;
    }
}